import { AlphaImageFinder } from "./core/AlphaImageFinder.js";
import { AtlasCleaner } from "./core/AtlasCleaner.js";
import { CodePatcher } from "./core/CodePatcher.js";
import { CodeStriper } from "./core/CodeStriper.js";
import { DisabledImageFinder } from "./core/DisabledImageFinder.js";
import { FileTypeScanner } from "./core/FileTypeScanner.js";
import { FontStriper } from "./core/FontStriper.js";
import { GenerateStriper } from "./core/GenerateStriper.js";
import { Handyman } from "./core/Handyman.js";
import { I18NChecker } from "./core/I18NChecker.js";
import { IconStriper } from "./core/IconStriper.js";
import { ImageCutter } from "./core/ImageCutter.js";
import { ImageDedup } from "./core/ImageDedup.js";
import { ImageFinder } from "./core/ImageFinder.js";
import { ImageReadable } from "./core/ImageReadable.js";
import { ImageReplacer } from "./core/ImageReplacer.js";
import { ImageSorter } from "./core/ImageSorter.js";
import { ImageStriper } from "./core/ImageStriper.js";
import { JsonStriper } from "./core/JsonStriper.js";
import { LegacyFinder } from "./core/LegacyFinder.js";
import { Missing } from "./core/Missing.js";
import { NPOT } from "./core/NPOT.js";
import { PrefabFixer } from "./core/PrefabFixer.js";
import { ProtocolStriper } from "./core/ProtocolStriper.js";
import { Relatives } from "./core/Relatives.js";
import { ScriptStriper } from "./core/ScriptStriper.js";
import { Svnmv } from "./core/Svnmv.js";
import { TextFormatChecker } from "./core/TextFormatChecker.js";
import { TmpMatSorter } from "./core/TmpMatSorter.js";
import { TreeShake } from "./core/TreeShake.js";
import { UIStriper } from "./core/UIStriper.js";
import { UsageFinder } from "./core/UsageFinder.js";
import { UsingLegacy } from "./core/UsingLegacy.js";
import { CmdOption } from "./typings/index.js";

const opts: CmdOption = {} as CmdOption;
const r: Relatives = new Relatives();
const handyman: Handyman = new Handyman();
const treeShake: TreeShake = new TreeShake();
const usageFinder: UsageFinder = new UsageFinder();
const legacyFinder: LegacyFinder = new LegacyFinder();
const imgReplacer: ImageReplacer = new ImageReplacer();
const usingLegacy: UsingLegacy = new UsingLegacy();
const alphaImgFinder: AlphaImageFinder = new AlphaImageFinder();
const disabledImgFinder: DisabledImageFinder = new DisabledImageFinder();
const fileTypeScanner: FileTypeScanner = new FileTypeScanner();
const atlasCleaner: AtlasCleaner = new AtlasCleaner();
const generateStriper: GenerateStriper = new GenerateStriper();
const codeStriper: CodeStriper = new CodeStriper();
const codePatcher: CodePatcher = new CodePatcher();
const fontStriper: FontStriper = new FontStriper();
const jsonStriper: JsonStriper = new JsonStriper();
const protocolStriper: ProtocolStriper = new ProtocolStriper();
const uiStriper: UIStriper = new UIStriper();
const iconStriper: IconStriper = new IconStriper();
const imgStriper: ImageStriper = new ImageStriper();
const prefabFixer: PrefabFixer = new PrefabFixer();
const scriptStriper: ScriptStriper = new ScriptStriper();
const npot: NPOT = new NPOT();
const imgReadable: ImageReadable = new ImageReadable();
const imgFinder: ImageFinder = new ImageFinder();
const imgDedup: ImageDedup = new ImageDedup();
const imgSorter: ImageSorter = new ImageSorter();
const missing: Missing = new Missing();
const i18nChecker: I18NChecker = new I18NChecker();
const svnmv: Svnmv = new Svnmv();
const imgCutter: ImageCutter = new ImageCutter();
const tmpMatSorter: TmpMatSorter = new TmpMatSorter();
const textFormatChecker: TextFormatChecker = new TextFormatChecker();

export const toolchain = { opts, r, handyman, treeShake, usageFinder, legacyFinder, imgReplacer, usingLegacy, alphaImgFinder, 
    disabledImgFinder, fileTypeScanner, atlasCleaner, generateStriper, codeStriper, codePatcher, fontStriper, jsonStriper, protocolStriper, 
    uiStriper, iconStriper, imgStriper, prefabFixer, scriptStriper, npot, imgReadable, imgFinder, imgDedup, imgSorter, missing, i18nChecker, svnmv, imgCutter, tmpMatSorter, textFormatChecker };
